package chapter07

/**
 *
 * @author cdhuangchao3
 * @date 2023/6/11 9:46 AM
 */
object Test12_DerivedCollection {
  def main(args: Array[String]): Unit = {
    val list1 = List(1, 2, 3, 4)
    val list2 = List(3, 5, 6, 7, 8, 9, 9)

    // 1.获取集合的头
    println(list1.head)
    // 2.获取集合的尾（去掉头，之外剩下的都是尾）
    println(list1.tail)
    // 3.集合最后一个数据
    println(list1.last)
    // 4.集合初始数据（不包含最后1个）
    println(list1.init)
    println("=" * 20)
    // 5.反转
    println(list1.reverse)
    // 6.取前（后）n个元素
    println(list1.tail(2))
    println(list1.takeRight(2))
    // 7.去掉前（后）n个元素
    println(list2.drop(2))
    println(list2)
    println(list2.dropRight(3))
    println("=" * 20)
    // 8.并集
    println(list1.union(list2))
    println(list1 ::: list2)
    // 如果是set做并集会去重

    // 9.交集
    println(list1.intersect(list2))
    // 10.差集
    println(list1.diff(list2))

    println("=" * 20)
    // 11.拉链
    println(list1.zip(list2))

    // 12.滑窗
    for (elem <- list2.sliding(3)) {
      println(elem)
    }
    println("=" * 20)

    for (elem <- list2.sliding(4, 2))
      println(elem)
    println("=" * 20)

    for (elem <- list2.sliding(3, 3))
      println(elem)
  }
}
